Interactive computer graphics is the most important means of producing pictures since the invention of photography and television. With the aid of a computer, digitized images can be edited to achieve a variety of effects such as changing the shapes and colors of objects, forming composite images, and correcting defects in the images.
Until recently, real-time editing of digital graphic images was feasible only on expensive high-performance workstations with dedicated, special-purpose, hardware. The progress of integrated circuit technology in recent years has produced microprocessors with significantly improved processing power and has also reduced the costs of computer memories. These developments have made it feasible now to provide advanced graphic editing capabilities in computer software designed for personal computers. As a result, the software industry sees a booming growth of computer graphics applications for personal computers.
One challenge constantly facing the designers of computer graphics applications is the need to reduce the amount of computer processing required to perform the graphic editing operations. Digital image editing is calculation-intensive. This is because a digital image typically contains from hundreds of thousands to millions of pixels. Even a simple editing operation may require the modification of many pixels, and the computing time can become unacceptably long if many calculational steps are required to modify each pixel in the image. This concern of calculational efficiency is especially significant for graphic applications operating on personal computers, due to the relatively restricted calculating power of such machines.
For example, many common operations that manipulate the colors of a digital image involve generally the transformation of the color vector of each image pixel from one point in the color space to another according to a transformation matrix. Examples of such operations include changing the tint of the image, altering the contrast and brightness, and colorizing black and white (or even color) images. Such a matrix transformation requires calculating the product of the color vector of the pixel being modified with the transformation matrix, which involves a series of multiplication and summation operations. Thus, many calculational steps have to be performed for transforming the color vector of each pixel, and the computing time required to transform the entire image can be very long. As a result, the application can become unacceptably slow in responding to editing instructions entered by the user. This is highly undesirable in view that the flexibility and responsiveness of the user interface is a key factor to the commercial success of graphics software designed for the personal computer market.
Matrix transformations are widely used in many areas of digital data processing besides image color transformation for a large number of different effects. Examples include spatial coordinate transformation and digital filtering. Accordingly, an efficient implementation of a general matrix transformation is needed in many different fields of digital data processing.